Interpolation is a well known procedure for determining a value corresponding to a point based on known values corresponding to surrounding points. Methods and apparatus for performing interpolation on computer systems can be critical to the user acceptance of certain computer applications.
For instance, many of the most advanced computer applications use three dimensional graphics that require texture mapping, i.e., mapping an image, or a texture map, onto a surface, such as an area in a pixel map to be displayed. A prior approach to texture mapping uses nearest neighbor sampling, wherein a color value for a display pixel is chosen to be the color value for the nearest texel, i.e., the nearest point in the texture map. However, this prior approach can result in undesirable jerky animation, because a small change in the texture map can cause dramatic changes in the nearest pixels.
Smoother animation can be achieved by using an approach involving bilinear interpolation. With bilinear interpolation, a color value for a display pixel is chosen by calculating a weighted average of the four nearest texels. However, using known methods and apparatus for bilinear interpolation on a computer system requires processor intensive iterations that degrade frame rates. Many application developers are unwilling to sacrifice high frame rates for smoother animation. Therefore, a novel approach to bilinear interpolation on a computer system has been developed.